# 兼容性和使用引擎建议
TapTap Unity小游戏基于WebAssembly技术,无需更换Unity引擎与重写核心代码的情况下将原有游戏项目适配到 TapTap 小游戏。部分性能优化项仅在Unity2021后才有,如更全的压缩纹理、压缩音频、更快的编译速度与更小的体积,推荐使用 Unity2021 后的版本。
# 推荐版本
引擎版本 | 压缩纹理格式 | 已验证小版本 |
---|---|---|
2021 | 推荐ASTC | 2021.1.* 及以上版本 |
2022(推荐) | 推荐ASTC | 2022.3.* 及以上版本 |
团结引擎-WebGL(推荐) | 推荐ASTC | 1.0.0 及以上版本 |
# 运行环境与性能限制
- Android 基于v8,Android WebGL2.0支持。
- iOS上对标微信高性能模式,在iOS 15.0后版本支持WebGL 2.0。支持JIT
- 不支持多线程
- 性能大概是Native的 1/3
- 在iOS上内存很受限制,代码分包是必要优化,可参考Wasm分包工具说明
- 建议先将游戏导出为WebGL在手机浏览器上运行,判断性能和兼容性是否可以接受。
# 可行性评估
# 游戏包体大小改造可能性
用户可以自行选择小包化方案。如果包体已符合要求(准入标准压缩后 小于60M,优秀是10),则可跳过
- 包体减小,主要在于对资源的分离,可选择的方案包括,且不限于
- 如果代码过于庞大,导致wasm 过大,也会造成加载和编译时间过长、在iOS上内存占用过大超出限制,那要根据实际情况进行评估是否能够删减。
- wasm大小可以查看导出产物目录下 converted/game/wasmcode/xxxxxxx.unityweb.wasm.br文件,文件大小建议<10M,超过需要开启wasm分包功能
# 游戏逻辑改造的可能性
- 支持托管类型的dll插件、C#源码插件,不支持非托管类型(如C++编译的)dll/so。项目依赖的必要插件有Android/iOS平台相关插件或so/framework原生插件,无法转换。
- 性能有限,如果项目中有较多密集运算,物理模拟,脚本,可能要做降级优化。
- iOS下内存受限,如果项目中有较大的贴图,模型,可能要做降级优化。
# 功能项评估
游戏重要的能力支持情况如下:
能力 | 是否支持 | 解决方案 |
---|---|---|
Unity基础模块 | 支持 | 支持动画、物理、AI、UI等基础模块 |
渲染管线与接口 | 支持 | 支持标准渲染管线、URP,但依赖WebGL2.0的特性处于Beta测试 |
资源加载 | 支持 | Addressable、AssetBundle网络异步加载 |
Lua脚本 | 支持 | 支持标准Lua与常见binding(如xlua, tolua等),不支持Luajit。需根据实际游戏在真机验证性能 |
PuerTS | 支持 | 支持JIT |
Unity音频 | 支持 | Unity Audio基本能力支持,暂未支持fmod插件,暂未支持wwise。长音频建议适配小游戏音频InnerAudio以优化内存 |
第三方插件 | 部分支持 | 支持大部分插件,C#插件与非平台相关的C原生插件 |
网络系统 | 需调整 | 不支持System.Net接口,HTTP使用UnityWebRequest,WebSocket通信替代(如开源的UnityWebSocket插件),UDP/TCP使用TAP SDK适配 |
多线程 | 不支持 | 删除多线程用法,使用异步等其他替代方式 |
文件系统 | 需调整 | 不支持System.File,但可使用小游戏Tap SDK(todo)实现文件存储,适配插件已实现资源的自动缓存与更新 |